package com.yiyang.controller;

import com.yiyang.entity.Building;
import com.yiyang.entity.ResultVO;
import com.yiyang.service.BuildingService;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;
//这个注解允许来自不同源（域名、协议或端口）的请求访问这个控制器。
//简单来说，就是如果网站和API部署在不同的域名或端口上，这个注解可以让前端应用能够安全地调用这个API。
@CrossOrigin
//这是一个组合注解 包括@Controller和@ResponseBody的功能。
// @Controller表示这个类是一个控制器，用于处理HTTP请求；
// @ResponseBody表示这个控制器中的方法返回的数据会直接作为HTTP响应体返回给客户端，而不是解析为视图名。
@RestController
@RequestMapping("/building")
public class BuildingController {
    @Resource
    private BuildingService buildingService;
@GetMapping("/list")
 public ResultVO<List<Building> > getBuilding(
        @RequestParam(name="currentPage",defaultValue = "1")
        Integer currentPage,
        @RequestParam(name="pageSize",defaultValue = "10")
        Integer pageSize,
        @RequestParam(name="name",defaultValue = "")
        String name,
        @RequestParam(name="numberOfFloor",defaultValue = "")
        String numberOfFloor
){
return this.buildingService.getBuilding(currentPage,pageSize,name,numberOfFloor);
 }
 @DeleteMapping("/delete")
    public ResultVO<Void> deleteItem(@RequestParam(name="id",required = true) String id){
    return this.buildingService.deleteItem(id);
 }
    @PostMapping("/add")
    public ResultVO<Void> addBuilding(@RequestBody Building building){
        return this.buildingService.addBuilding(building);
    }
    @PutMapping ("/update")
    public ResultVO<Void> updateBuilding(@RequestBody Building building){
        return this.buildingService.updateBuilding(building);
    }
}
